package com.gxa.ssm251.service;

import com.gxa.ssm251.exception.BusinessException;
import com.gxa.ssm251.pojo.Coupon;
import com.gxa.ssm251.pojo.CpScope;

import java.util.List;

/**
 * 优惠券业务层
 * @author 舒空
 */
public interface CouponService {
    /**
     * 添加优惠券
     * @param coupon 优惠券实体类
     * @return 数据库执行行数
     * @throws BusinessException 抛给前端的异常处理
     */
    Integer addCoupon(Coupon coupon) throws BusinessException;

    /**
     * 添加优惠券使用范围
     * @param id 优惠券id
     * @param list 一张优惠券对应的使用范围id集合
     * @return 数据库影响行数
     */
    Integer addCpScope(Integer id,List<String> list);

    /**
     * 优惠券名字查找数据
     * @param name 优惠券名
     * @return 包含优惠券名的记录
     */
    Coupon selectByName(String name);

    /**
     * 分页全查询
     * @param page 需要显示的页数
     * @param size 每页显示几条数据
     * @return 分页逆序的list集合数据
     */
    List<Coupon> selectAllByPage(Integer page,Integer size);

    /**
     * 分页全查询
     * @return list集合数据
     */
    Integer selectCountAll();

    /**
     * 通过id查询数据
     * @param id 优惠券编号
     * @return 返回id对应的数据属性的集合
     */
    List<Coupon> selectById(Integer id);

    /**
     * 修改优惠券
     * @param coupon 优惠券的修改内容
     * @return 数据库修改的条数
     */
    Integer update(Coupon coupon);

    /**
     * 删除关系表为id的记录
     * @param id 关联表的优惠券编号
     * @param list 关联表的使用范围编号集合
     * @return 数据库影响条数
     */
    Integer updateScope(Integer id,List<String> list);

    /**
     * 修改优惠券能否使用的状态
     * @param coupon 是否使用 数据库存储0或1
     */
    void updateInUse(Coupon coupon);
//
//    /**
//     * 优惠券范围
//     * @param cpId 优惠券id
//     * @return 返回优惠券的使用范围的集合
//     */
//    List<CpScope> selectScope(Integer cpId);

}
